/*
 |--------------------------------------------------------------------------
 | 控制器 
 | A.原则上一个 view 模板绑定一个控制器来处理, 而具有相同交互功能的 view 模板可以共
 |   享同一个控制器
 | B.依赖注入 IOC
 |   从每个类的 constructor 函数输入依赖, 并在函数体首行声明 "ngInject" 以免在代
 |   码打包的时候出错
 |--------------------------------------------------------------------------
 */

import './style.scss';
class Controller {
    constructor (ApiService, uiNotification, $cookies, $rootScope, $state, $location) {
        "ngInject"
        this.notify     = uiNotification;
        this.service    = ApiService;
        this.state      = $state;
        this.rootScope  = $rootScope;
        this.cookies    = $cookies;
        this.select     = [];
        this.loading    = false;

        // 请求岗位列表
        ApiService.getPostList().then((res) => {
            this.select = res.data;
            // 只有一个岗位或者传递参数 showPost 为假时, 直接跳转至主框架
            if ( res.data.length == 1 ) {
                let param = {
                    sysPostId: res.data[0].sys_post_id,
                    orgId: res.data[0].org_id
                }
                this.setPost(param);
            }
        })
    }

    /**
     * 设置岗位接口, 同时用户信息写入"后端"缓存
     * @param param = {sysPostId: , orgId: } 可以为空
     */
    setPost(param) {
        this.loading = true;
        this.service.setPost(param).then((res) => {
            this.rootScope.isSetPost = true;
            // this.cookies.putObject('ctgUser', res.data); // User 信息存入缓存
            this.state.go('home');
        }).finally(() => {
            this.loading = false;
        })
    }

    /**
     * 选岗位操作
     * @param $event
     * @returns {*}
     */
    entry ($event) {
        let param = {
            sysPostId: this.selected.sys_post_id,
            orgId: this.selected.org_id
        }
        if ($event) {
            if ($event.keyCode !== 13) return;
            //this.rootScope.isSetPost = true;
            return this.setPost(param);
        }
        //this.rootScope.isSetPost = true;
        this.setPost(param);
        //this.state.go('home', this.stateParam);
    }
}

export default Controller;